(function($){
	var JiePosWin = function(el, options, callback){
		this.$el = el;
		this.options = $.extend({}, JiePosWin.DEFAULT_OPTION, JiePosWin.DEFAULT_CALLBACK, options);
		/*确认按钮回调*/
		if(typeof callback === "function"){
			if(!this.options.buttons || this.options.buttons.length === 0){
				return;
			}
			var cancel = this.options.buttons[1].handler;
			this.options.buttons[0].handler = function(){
				var result = callback();
				if(result !== false){
					cancel(el, options);
				}
			}
		}
		var _window = this.$el.dialog(this.options);
		/*关闭窗口*/
		this.close = function(){
			_window.dialog("close");
		},
		/*加载窗口*/
		this.refresh = function(url){
			_window.dialog("refresh", this.options.href);
		}
	};
	
	/*默认配置*/
	JiePosWin.DEFAULT_OPTION = {
		href: null,
		title: "新窗口", // 窗口的标题文本
		width: 400,
		height: 500,
		collapsible: false, // 定义是否显示折叠按钮
		minimizable: false, // 定义是否显示最小化按钮
		maximizable: false, // 定义是否显示最大化按钮
		closable: true, // 定义是否显示关闭按钮
		closed: false, // 定义是否关闭窗口
		draggable: true, // 定义窗口是否可拖拽
		resizable: false, // 定义窗口是否可调整尺寸
		shadow: true, // 如果设置为 true，当窗口能够显示阴影的时候将会显示阴影
		inline: false, // 定义如何放置窗口，当设置为 true 时则放在它的父容器里，当设置为 false 时则浮在所有元素的顶部
		modal: true, // 定义窗口是不是模态（modal）窗口
		buttons: null,
		cache: true //是否缓存
	};
	
	/*弹窗默认的确认和取消方法*/
	JiePosWin.DEFAULT_CALLBACK = {
		buttons: [
			{text: "确定", iconCls: "icon-ok", handler: function(el, options){
				$(".panel-tool-close").trigger("click");
				if(options.cache == false){
					el.html("");
				}
			}},
			{text: "取消", iconCls: "icon-cancel", handler: function(el, options){
				$(".panel-tool-close").trigger("click");
				if(options.cache == false){
					el.html("");
				}
			}}
		]
	}
	
	$.fn.jpwin = function(options, callback){
		return new JiePosWin(this.length == 0 ? $("#jpWin") : this, options, callback);
	}
	
	/*消息弹窗类型*/
	var msgType = {
		info: ["信息提示", "info"],
		question: ["问题", "question"],
		warning: ["警告", "warning"],
		error: ["错误提示", "error"],
		confirm: "确认信息",
	};
	
	/*系统消息弹窗*/
	$.jpmessage = {
		/*信息弹窗*/
		info: function(msg, callback){
			$.messager.alert(msgType.info[0], msg, msgType.info[1], callback);
		},
		/*问题弹窗*/
		question: function(msg, callback){
			$.messager.alert(msgType.question[0], msg, msgType.question[1], callback);
		},
		/*警告弹窗*/
		warning: function(msg, callback){
			$.messager.alert(msgType.warning[0], msg, msgType.warning[1], callback);
		},
		/*错误弹窗*/
		error: function(msg, callback){
			$.messager.alert(msgType.error[0], msg, msgType.error[1], callback);
		},
		/*确认弹窗*/
		confirm: function(msg, callback){
			$.extend($.messager.defaults, {ok: "确定", cancel: "取消"});
			$.messager.confirm(msgType.confirm, msg, callback);
		}
	};
	
	$.jpajax = function(options){
		$.ajax({
			url: options.url,
			type: options.type,
			data: options.data,
			async: options.async || false,
			success: function(result){
//				if(!result || result.code !== '00'){
//					$.jpmessage.error('服务器繁忙，请稍后再试');
//					return false;
//				}
				options.success(result);
			},
			error: function(XMLHttpRequest, textStatus, errorThrown){
				$.jpmessage.error(textStatus);
			}
		});
	}
})($)